Item delivery fulfillment plan determination

ABSTRACT

According to examples, an apparatus may include a processor that is to generate a plurality of candidate fulfillment plans regarding delivery of items over a network, in which each of the candidate fulfillment plans is generated using a respective decision variable of an array of values. The processor may also calculate an evaluation value for each of the candidate fulfillment plans, in which the evaluation value for a candidate fulfillment plan is a measure of a compliance of the candidate fulfillment plan with a plurality of factors pertaining to the delivery of the items. The processor may further output instructions regarding delivery of the items over the network according to the candidate fulfillment plan that corresponds to a maximized compliance with the plurality of factors among the calculated evaluation values to maximize compliance with the plurality of factors in the delivery of the items.

CLAIM FOR PRIORITY

The present application claims the benefit of priority to U.S. Provisional Application Ser. No. 62/469,501 having the title “DECOMPOSITION OF COMPUTATIONAL PROCESSING FOR NETWORK ROUTING AND OTHER COMPUTATIONAL TASKS,” filed on Mar. 9, 2017, the disclosure of which is hereby incorporated by reference in its entirety.

BACKGROUND

Computer systems are widely used for many applications in today's digital environment. In many instances, computer applications perform computationally intensive tasks to derive usable results for real-world, practical applications. This may include situations that require analysis of large amounts of data, or situations where the computer application performs computations on a large number of variables, taking into consideration multiple rules and constraints, to derive usable results for a real-world, practical application. Routing of items in a network is one such example of a real-world, practical application whereby multiple variables and constraints are to be considered to determine optimal routes of the items from providers to destinations.

BRIEF DESCRIPTION OF THE DRAWINGS

Features of the present disclosure are illustrated by way of example and not limited in the following figure(s), in which like numerals indicate like elements, in which:

FIG. 1 shows a block diagram of an example network in which features of the present disclosure may be implemented in accordance with an embodiment of the present disclosure;

FIG. 2 shows a block diagram of an apparatus in accordance with an embodiment of the present disclosure;

FIG. 3 depicts a flow diagram of a method for identifying a fulfillment plan that corresponds to a maximized compliance with a plurality of factors pertaining to the delivery of items over a network in accordance with an embodiment of the present disclosure;

FIGS. 4A and 4B, collectively, depict a flow diagram of a method for identifying a fulfillment plan that corresponds to a maximized compliance with a plurality of factors pertaining to the delivery of items over a network in accordance with another embodiment of the present disclosure; and

FIG. 5 depicts a flow diagram of a method for generating a candidate fulfillment plan in accordance an embodiment of the present disclosure.

DETAILED DESCRIPTION

For simplicity and illustrative purposes, the present disclosure is described by referring mainly to embodiments. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be readily apparent however, that the present disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure.

Throughout the present disclosure, the terms “a” and “an” are intended to denote at least one of a particular element. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.

Disclosed herein are apparatuses and methods to identify a fulfillment plan regarding delivery of items in multiple orders to their intended destinations in a manner that maximizes compliance with a plurality of factors pertaining to the delivery of the items. Generally speaking, the identified fulfillment plan may be the best plan from among a plurality of candidate fulfillment plans. That is, the identified fulfillment plan may be the plan under which the items may be delivered in a manner that results in minimized costs, minimized delivery times, minimized violations of rules, and/or a combination of minimized costs, minimized delivery times, and/or minimized violations of rules among the candidate fulfillment plans. In addition or in other examples, the identified fulfillment plan may be defined as a fulfillment plan that results in the items being delivered in a substantially optimized manner as may be determined within a certain amount of time and/or a certain number of iterations.

The apparatuses disclosed herein may generate a rule-based model of a distributed order fulfillment problem and may solve that problem to identify the fulfillment plan. That is, the apparatuses disclosed herein may model the order fulfillment problem as a network of potential providers, potential intermediaries, and a group of unfilled orders. In addition, the apparatuses may implement a heuristic method to solve the order fulfillment problem in a manner that may result in compliance with a plurality of factors pertaining to the delivery of the items in the orders being maximized among the possible fulfillment plans. Particularly, the apparatuses disclosed herein may generate a plurality of candidate fulfillment plans using respective random decision variables, may calculate evaluation values for the candidate fulfillment plans, and may select the best fulfillment plan based upon the calculated evaluation values.

Items, such as goods, packets of data, etc., may often be provided by at least one of a plurality of providers and may traverse at least one of a plurality of intermediaries prior to reaching a final destination. As such, the items may take any of a plurality of paths from the providers to the destinations through the intermediaries. The multiple paths may be associated with different monetary costs, different delivery times, rules, and the like, with respect to each other. In this regard, delivering the items via one of the paths instead of another one of the paths may result in higher costs, longer delivery times, and/or violations of rules. Selection of a path that is associated with higher costs, longer delivery times, and/or that violates a rule may thus result in inefficient delivery of the items. That is, for instance, selection of a particular path may result in the items being provided by a particular provider and/or traversing a particular intermediary that the items would not have traversed had the path that results in minimized costs, minimized delivery times, and/or minimized violations of rules been utilized instead of the selected particular path. Improper selection of a particular path may thus result in an inefficient use of the providers and/or the intermediaries.

The apparatuses and methods disclosed herein may determine a plurality of candidate fulfillment plans, may compare the candidate fulfillment plans with respect to each other, and may select one of the candidate fulfillment plans as the fulfillment plan for delivering the items over the network. Particularly, for instance, an evaluation value (or equivalently, an evaluation score) for each of the candidate fulfillment plans may be calculated and may be compared with respect to each other to identify the candidate fulfillment plan corresponding to a highest level of compliance with a plurality of factors in the delivery of the items. In addition, information pertaining to the identified candidate fulfillment plan may be outputted such that the items may be delivered according to the identified candidate fulfillment plan. By identifying the candidate fulfillment plan having the highest level of compliance with the plurality of factors in the delivery of the items and instructing compliance with the identified candidate fulfillment plan, the items may be delivered with fewer violations of sets of rules and constraints. In this regard, the providers and/or the intermediaries may be utilized in a relatively more efficient as well as compliant manner in the delivery of the items.

Additionally, a distributed order management problem may be a NP-hard problem that may require a great deal of computational resources and time. The apparatuses and methods disclosed herein may decompose the distributed order management problem into subtasks and may solve the subtasks individually, which may increase the computational efficiency of the apparatuses as compared with apparatuses that do not decompose the distributed order management problem. This may result in a reduction in processing time and usage of computational resources in determining the fulfillment plan for the delivery of items.

With reference first to FIG. 1, there is shown a block diagram of an example network 100 in which features of the present disclosure may be implemented in accordance with an embodiment of the present disclosure. It should be understood that the network 100 depicted in FIG. 1 may include additional components and that some of the components described herein may be removed and/or modified without departing from a scope of the network 100.

The network 100, which is also referenced herein as an infrastructure, is depicted as including a plurality of providers 102-1 to 102-N (which are referenced herein collectively as providers 102), a plurality of intermediaries 110-1 to 110-M (which are referenced herein collectively as intermediaries 110), and a plurality of destinations 120-1 to 120-P (which are referenced herein collectively as destinations 120). The variables “N,” “M,” and “P” may each represent a value greater than 1. Additionally, connections 104 are depicted between the providers 102 and the intermediaries 110 and connections 106 are depicted between the intermediaries 110 and the destinations 120.

Generally speaking, the network 100 is a network over which items may be delivered from the providers 102 to the destinations 120 via the intermediaries 110. The items may be packets of data, products that are sold in commerce, and the like. In examples in which the items are packets of data, the providers 102 may be servers, data storage locations, service providers, or the like that may communicate the packets of data over a communications network, such as the Internet. In these examples, the intermediaries 110 may be network components, such as routers, switches, servers, data centers, or the like, through which the packets of data from the providers 102 may be routed or traversed. In addition, the destinations 120 may be computing devices that are assigned with respective IP addresses that may be used as destination addresses for the data packets from the providers 102.

In examples in which the items are products, the providers 102 may be physical stores, warehouses, etc., at which the products may be stored and from which the products may be provided. In addition, the intermediaries 110 may be distribution centers, product shipping companies, etc., that may facilitate or may otherwise be involved in the delivery of the products to the destinations. In some examples, the same physical store, warehouse, distribution center, etc., may be considered to be both a provider 102 a and an intermediary 110 a. The destinations 120 may be businesses, homes, etc., to which the products may be delivered.

As shown in FIG. 1, items may traverse any of a number of different paths from the providers 102, through the intermediaries 110, and to the destinations 120 via the connections 104, 106. The different paths may be associated with different delivery costs and/or delivery timeframes with respect to each other. For instance, delivering an item through a first path may result in the incursion of a first monetary cost and a first delivery timeframe, while delivering the item through a second path may result in the incursion of the same monetary cost but may incur a second delivery timeframe. Additionally, restrictions on which of the paths the item may traverse may exist based upon set policies and rules and thus, the item may not be delivered through those paths upon which the restrictions apply. As discussed herein, candidate fulfillment plans of the possible paths that the item may traverse may be evaluated and the candidate fulfillment plan having the maximum compliance with a set of factors may be selected for delivery of the item. For instance, the candidate fulfillment plan resulting in the incursion of the lowest amount of monetary cost and the shortest delivery timeframe may be selected for delivery of the item.

According to examples, an apparatus 130 may receive orders for the items to be delivered to the destinations 120. For instance, the apparatus 130 may provide a portal or user interface through which a user may place the orders for the items. In other examples, the apparatus 130 may receive the orders for the items from another apparatus or service. In any regard, delivery of the items may be construed as an order fulfillment problem and the apparatus 130 may include a processor that may build a rule-based model, e.g., a model that may be specified by rules, of the order fulfillment problem. That is, the processor may model the order fulfillment problem as a network of potential providers, potential intermediaries, and a group of unfilled orders. In addition, the processor may implement a heuristic method to solve the order fulfillment problem in a manner that may result in compliance with a plurality of factors pertaining to the delivery of the items in the orders being maximized among the possible fulfillment plans.

The apparatus 130 may also output instructions for the items to be delivered over the network 100 according to the fulfillment plan that is determined to maximize compliance with the plurality of factors among the candidate fulfillment plans. For instance, the apparatus 130 may output the instructions to the providers 102 over a data network 140, which may be the Internet, a cellular network, a telephone network, etc. In response to receipt of the instructions from the apparatus 130, the providers 102 may initiate delivery of the items. By way of example in which the items are data packets, the providers 102 may insert the appropriate routing and destination IP addresses as well as any other information into the data packets to cause the data packets to be routed through a particular intermediary 110-1 and to a particular destination 120-1. In another example in which the items are products, the providers 102 may mark the products to be delivered to a particular intermediary 110-1 and to a particular destination 120-1.

Turning now to FIG. 2, there is shown a block diagram of an apparatus 200 in accordance with an embodiment of the present disclosure. The apparatus 200 may be equivalent to the apparatus 130 shown and discussed above with respect to FIG. 1. Additionally, the apparatus 200 may be a computing device, a server computer, etc. It should be understood that the apparatus 200 depicted in FIG. 2 may include additional components and that some of the components described herein may be removed and/or modified without departing from a scope of the apparatus 200.

As shown, the apparatus 200 may include a processor 202 that may control operations of the apparatus 200. The processor 202 may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other hardware device. Although the apparatus 200 has been depicted as having a single processor 202, the apparatus 200 may include multiple processors 202 that may perform multiple processing operations concurrently.

The apparatus 200 may also include a memory 210 that may have stored thereon machine readable instructions 212 (which may also be termed computer readable instructions) that the processor 202 may execute. The memory 210 may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions as well as other data. The memory 210 may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The memory 210, which may also be referred to as a computer readable storage medium, may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Although the apparatus 200 has been depicted with a single memory 210, the apparatus 200 may include multiple memories 210 that may be included in the apparatus 200 and/or may be external to the apparatus 200.

The processor 202 may fetch, decode, and execute the instructions 214 to generate random decision variables. A random decision variable may be defined as an artificially defined array with random values ranging between 0 and 1, which may be used to generate a candidate fulfillment plan as discussed herein. In addition, the processor 202 may fetch, decode, and execute the instructions 216 to initiate or select a candidate group of random decision variables. The processor 202 may fetch, decode, and execute the instructions 218 to manage counters, e.g., an outer counter and an inner counter, which are also referenced herein as a first counter and a second counter, respectively. The processor 202 may fetch, decode, and execute the instructions 220 to construct a population based upon a selection of decision variables with a probability determined from a candidate group of random decision variables. The processor 202 may fetch, decode, and execute the instructions 222 to generate candidate fulfillment plans to fulfill orders for delivery of items through use of the random decision variables. Thus, for instance, a separate random decision variable may be used to generate a separate candidate fulfillment plan.

The processor 202 may fetch, decode, and execute the instructions 224 to calculate an evaluation value (which is also referenced herein as a score) for each of the generated candidate fulfillment plans. The processor 202 may fetch, decode, and execute the instructions 226 to identify the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with a plurality of factors pertaining to the delivery of items. For instance, the processor 202 may identify the candidate fulfillment plan having the lowest evaluation value. The processor 202 may fetch, decode, and execute the instructions 228 to output instructions to deliver the items over the network 100 according to the identified candidate fulfillment plan.

The processor 202 may output the instructions through an interface 204, which may include hardware components, software components, or a combination of hardware and software components to facilitate the communication of data from and to the processor 202. According to examples, the interface 204 may be an interface to an external network such as the Internet.

As also shown in FIG. 2, the memory 210 may have stored thereon random decision variables 230. The random decision variables 230 may be the processor 202 generated random decision variables or random decision variables that may have been generated by another device and supplied to the apparatus 200. In any regard, and as discussed in greater detail herein, the processor 202 may use the random decision variables 230 to generate a plurality of candidate fulfillment plans 232, which may also be stored on the memory 210.

The memory 210 may also have stored thereon order data 234, provider data 236, and intermediary data 238. The order data 234 may identify orders for items that are to be delivered over the network 100. The order data 234 may identify orders that have been fulfilled and orders that have not yet been fulfilled. The order data 234 may also include information associated with the orders, such as a list of items (e.g., data packets, products, etc.) included in the orders, quantities of each of the items in the orders, a delivery address or delivery addresses of the orders (e.g., the IP address of the destination 120-1, the postal address of the destination 120-1, etc.), rules associated with the orders (e.g., all of the ordered items are to arrive together and in a certain sequence, all of the ordered items should arrive within a certain timeframe, the number of items associated with the order being sent to the shipping address should be less than a certain number, etc.), and the like.

The provider data 236 may identify the providers 102 in the network 100. The provider data 236 may also include an identification of the data stored/inventories of the providers 102 and/or access to the data stored/inventories of the providers 102. The provider data 236 may also include information associated with the providers 102 such as, for each of the particular providers 102:

-   -   a list of items associated to the orders;     -   available inventory of the items (e.g., stored data packets)         listed in the orders;     -   a delivery address of the items; and     -   rules associated with a destination (e.g., all of the items sent         to the same address should be sent as one package, etc.).

The intermediary data 238 may identify the intermediaries 110 in the network 100. The intermediary data 238 may also include information associated with the intermediaries 110 such as, for each of the intermediaries 110, a delivery address, rules associated with the intermediary 110 (e.g., all items sent from an intermediary 110 to the same destination address should be sent as one package), etc.

The memory 210 may further have stored thereon a transit parameters table 240 that may provide related parameters of transiting items from the providers 102 to the intermediaries 110 and from the intermediaries 110 to the destinations 120 for the orders. The related parameters may include delivery cost, delivery time, etc. Examples of delivery cost may include costs associated with routing packets through an IP network, shipping fees, or the shipping distance, or any other parameters that directly relate to the cost of handling items. In instances in which a provider 102-1 is both a provider and an intermediary in a candidate fulfillment plan, the transit cost within such a provider is zero.

The delivery time may be defined as a parameter that indicates the delivery time of transiting items from a provider to an intermediary and/or from an intermediary to a destination. In instances in which a provider 102-1 is both a provider and an intermediary 110-1 for the provider 102-1 in a candidate fulfillment plan, the transit time for the provider and the intermediary is zero. Information associated with the transit parameters table may include for instance:

-   -   Delivery cost and delivery time;     -   Rules associated with the corresponding transit. For example, an         extreme weather rule may be active in which the transit between         a provider and an intermediary may temporarily not be allowed         (in this case, the delivery costs of all delivery types may be         set to infinity in the transit parameters table) or the transit         from a provider to an intermediary may always be restricted. As         another example, a service disruption rule may be active in         which the transmission of data packets is temporarily not         possible (in this case, the delivery costs of all delivery types         may be set to infinity in the transit parameters table).

The memory 210 may further have stored thereon a plurality of rules 242 that may specify how the unfilled orders identified in the order data 234 are to be grouped, which providers 102 should be selected as potential providers of the items identified in the orders, etc. Examples of the rules on grouping the orders may include:

-   -   Group the orders by order creation time, as well as the maximum         number of order lines allowed in a group. An order line may         refer to an individual item included in an order of any quantity         and an order may contain multiple order lines.     -   Group the orders by shipping method, e.g., packets contained in         the same package, overnight shipping, two day shipping, ground         shipping, etc.

The rules 242 may also specify particular rules that may be enforced on the delivery of the items. A user, a provider 102, and/or an intermediary 110 may specify the rules 242 through, for instance, a user interface, e.g., a website. Examples of the rules on each of the orders may include:

-   -   A user may indicate that all of the items be received within a         particular number of days. This rule may specify a delivery         constraint of the rule-based model discussed herein, e.g., the         delivery time from providers 102 to destinations 120 to be less         than or equal to the particular number of days.     -   A user may indicate that the ordered items be delivered in at         most a particular number of separate packages, in which the         transition cost of the rule-based model is cost per package.         This rule may specify a number of intermediaries 110 constraint         of the rule-based model discussed herein, e.g., the number of         the intermediaries 110 chosen from the potential intermediaries         110 should be no more than the particular number of separate         packages.     -   A user may indicate that the ordered items be shipped as a         single package, in which the transition cost of the rule-based         model is cost per package. This rule may specify the number of         intermediaries 110 constraint of the rule-based model, e.g., the         number of the intermediaries 110 chosen among the potential         intermediaries to deliver the items should be exactly one.     -   A user may indicate that the items of all orders be delivered as         soon as possible. This rule may specify an objective function of         the rule-based model, e.g., the goal of the rule-based model may         be to minimize the delivery time of fulfilling the order.     -   A user may choose a local store to pick up the items that were         ordered online. This rule may specify the location of the user,         which may not be the address of the user, but the address of the         chosen local store.     -   A provider 102 may set rules to reject orders that have certain         features or to reject certain types of orders.     -   An intermediary 110 may set rules to reject orders that have         certain features or to reject certain types of orders.

The rules 242 may further specify particular rules that are applicable to the providers 102. The providers 102 may specify these rules 242 through, for instance, a user interface, e.g., a website. Examples of these rules may include:

-   -   Nearest warehouse policy. In this rule, all of the items an         order should be sent from providers to an intermediary that is         nearest to the destination of the items and the intermediary         should send the items together to destination. This rule may         specify the potential intermediaries appearing in the network,         e.g., according to the rule, the rule-based model should         automatically find the intermediary nearest to the destination,         and set that intermediary to be the only potential intermediary         in the network for the order.     -   Available local stores within a certain distance policy. In this         rule, if the destination is located in an area in which multiple         stores may be chosen as potential providers, then the providers         that have the items available and are within a certain distance,         e.g., 10 miles, from the destination should be set as potential         providers. In response to the total available items being found         within the certain distance can only partially fulfill the         order, then increase the searching distance by an additional         distance, e.g., another 10 miles, each time until enough         available items are found.     -   Ineligible potential intermediaries policy. In this rule, if the         ordered items belong to a certain type, then only certain ones         of the intermediaries may be selected as potential         intermediaries of the items. Likewise, if the ordered items         belong to another certain type, then certain ones of the         intermediaries cannot be selected as potential intermediaries of         the items. This rule may restrict the choice of potential         intermediaries in the network.     -   All items should be shipped directly from chosen providers to         destinations. This rule may eliminate the potential         intermediaries in the network. According to examples, instead of         eliminating the potential intermediaries from the network 100,         the destination may be set as the only potential intermediary         and the transition cost and the transition time from the         potential intermediary to the destination may be set to be zero.     -   At most a certain number of potential providers may be chosen as         the final providers to fulfill the order. This rule may specify         a number of provider constraint of the rule-based model, e.g.,         the number of the providers selected among the potential         providers to fulfill an order should be no more than the certain         number.     -   An on-line retailer may prefer to minimize the number of         providers selected among the potential providers to fulfill the         order. This rule may specify the objective function of the         rule-based model, e.g., the goal of the rule-based model may be         to minimize the number of providers to fulfill the customer         order.

The rules 242 may further specify particular rules that are applicable to the intermediaries 110. Examples of these rules may include: If a store is chosen as a provider, the store has to ship items directly to the destination. In this case, for example, the transit from the store to the any potential intermediaries may be restricted, e.g., the items may only be allowed to transit within the store.

The rules 242 may further specify particular rules that are applicable to the shipping methods. Examples of these rules may include: for the same transit connection, multiple intermediaries may be selected to send a package containing items. Shipping method rules may be used to guide which intermediary is to be selected for a particular connection. For instance, the intermediary having the lowest transit cost may always be selected for the same type of shipping. As another example, the intermediary having the fasted delivery time may always be selected.

The rules 242 may further specify particular rules that are applicable to an overall goal in the fulfillment of the orders. Examples of these rules may include:

-   -   Minimize the total shipping cost of the items in the orders.         Under this rule, the delivery cost of each transit connection         may be set as the shipping cost.     -   Minimize the sum of delivery time of the entire network. Under         this rule, the delivery cost of each transit connection may be         set as the shipping time.     -   Minimize the total number of packages delivered in the entire         network. Under this rule, the delivery cost of each transit         connection may be set as one.     -   Minimize the total number of packages received by all addresses         associated with orders. Under this rule, the delivery cost of         any valid transit connection between a potential provider and a         potential intermediary may be set as zero and the delivery cost         of any valid transit connection between a potential intermediary         and a destination associated with an order may be set as one.

As discussed herein, the processor 202 may use the information 230-242 stored in the memory 210 in generating the rule-based model used to generate and select the fulfillment plan regarding delivery of the items. Generally speaking, the process of handling the rules 242, the process of constructing an order fulfillment network, and generating the rule-based model may not be separable and may thus be operated together. In addition, given an order, the processor 202 may detect and apply active rules to construct the order fulfillment network and generate the rule-based model. It should be noted that the rules 242 may be updated dynamically.

In addition, the processor 202 may detect and handle conflicting rules. For instance, the processor 202 may determine that one type of rule supersedes other types of rules. An example of conflicting rules is that, one of the user rules requires minimization of delivery time, but one of the provider rules considers minimizing cost as the highest priority rule. The two different goals defined by the two rules could conflict with each other. In this example, the processor 202 may prioritize the user rule higher than the provider rule or vice versa to avoid the conflicting rules.

The processor 202 may generate the rule-based model used to identify the fulfillment plan as a linear integer problem, e.g., a distributed order management problem, and may apply a linear programming method to solve the problem. As the number of the components contained in the network grows, the complexity of the rule-based model grows exponentially and leads to a large scale linear integer problem, which is a NP-hard problem (non-deterministic polynomial-time hard). Considering that, the distributed order management problem discussed herein may involve a relatively large number of unfulfilled orders, providers, and intermediaries, as well as complex rules, the processor 202 may apply a heuristic method to solve this large scale and complex problem.

The memory 210 may further have stored thereon a plurality of factors 244 pertaining to the delivery of the items. That is, for instance, the processor 202 may determine the factors 244 during generation of the candidate fulfillment plans and may store the factors 244 corresponding to each of the candidate fulfillment plans. The factors 244 for a candidate fulfillment plan may include, for instance, a total number of orders that have an infeasible fulfillment plan, a total number of orders that are not fulfilled, a total number of orders that violate a delivery constraint, a total number of orders that violate an item constraint, and the like. Orders that have an infeasible fulfillment plan may be defined as orders that may be fulfilled by violating one or more existing constraints. Orders that are not fulfilled may be defined as orders that may not be fulfilled even by relaxing constraints. By way of example, an order for a product may not fulfilled in instances in which the product is not available anywhere. As discussed herein, the factors 244 may be included in an evaluation function applied to the candidate fulfillment plans to determine evaluation values of the candidate fulfilment plans.

Various manners in which the apparatus 200, and particularly, the processor 202, may operate are discussed in greater detail with respect to the methods 300, 400, and 500 depicted in FIGS. 3-5. Particularly, FIG. 3 depicts a flow diagram of a method 300 for identifying a fulfillment plan that corresponds to a maximized compliance with a plurality of factors 244 pertaining to the delivery of items over a network in accordance with an embodiment of the present disclosure. FIGS. 4A and 4B, collectively, depict a flow diagram of a method 400 for identifying a fulfillment plan that corresponds to a maximized compliance with a plurality of factors 244 pertaining to the delivery of items over a network in accordance with another embodiment of the present disclosure. In other words, FIGS. 3 and 4A-4B, respectively, depict flow diagrams of methods 300 and 400 for identifying a fulfillment plan that corresponds to a maximized compliance with a plurality of factors 244 pertaining to fulfillment of multiple orders for the delivery of items. In addition, FIG. 5 depicts a flow diagram of a method 500 for generating a candidate fulfillment plan in accordance with an embodiment of the present disclosure. It should be understood that the methods 300, 400, and 500 depicted in FIGS. 3-5 may include additional operations and that some of the operations described therein may be removed and/or modified without departing from the scopes of the methods 300, 400, and 500. The descriptions of the methods 300, 400, and 500 are made with reference to the features depicted in FIGS. 1 and 2 for purposes of illustration.

With reference first to FIG. 3, at block 302, the processor 202 may execute the instructions 222 to generate a plurality of candidate fulfillment plans, in which each of the plurality of candidate fulfillment plans is generated using a respective decision variable 230. Thus, the processor 202 may use a plurality of decision variables to generate the candidate fulfillment plans. In addition, each of the plurality of decision variables may include different sets of values with respect to each other. In this regard, application of the respective decision variables may result in the candidate fulfillment plans having different combinations of providers 102 and intermediaries 110 with respect to each other.

A decision variable may not be a naturally defined decision variable, but may be an artificially defined array with values between 0 and 1. The values in the decision variable may be randomly selected. Particularly, for instance, the decision variable may be a random decision variable, which may be represented as (X_(r)), and may be an array of random numbers or values as indicated in the following equation (1):

X_(r) = {x_(r 1,)x_(r 2,)… , x_(r(N_(s)),)x_(r(N_(s) + 1),)x_(r(N_(s) + 2),)… , x_(r(N_(s) + N_(s)),)x_(r(2N_(s) + 1),)x_(r(2N_(s) + 2),)… , x_(r(2N_(s) + K))}

In equation (1) above, x_(ri) is a random value generated by an iteration of a chosen heuristic optimization algorithm, 0<x_(ri)≤1 for all i, N_(s) is a total number of potential providers 102 and K is total number of orders to be fulfilled. In some examples, the “artificial” decision variable, such as the random decision variable (X_(r)), may be constructed to map a complex decision variable of an original problem into a well-defined high dimension decision variable with a [0,1] boundary on each dimension such that the decision variable may fit into a class of well-developed heuristic algorithms, such as the genetic algorithm, the simulated annealing algorithm, and the like.

In addition, X_(r) in equation (1) above may be construed as including three subsets. A first subset of the decision variable X_(r) may include the values in the array {x_((2N) _(s) ₊₁₎, x_(r(2N) _(s) ₊₂₎, . . . , x_(r(2N) _(+K))}, a second subset of the decision variable X_(r) may include the values in the array {x_(r1), x_(r2), . . . , x_(rN) _(s) }, and a third subset of the decision variable X_(r) may include the values in the array {x_(r(N) _(s) ₊₁₎, x_(r(N) _(s) ₊₂₎, . . . , x_(r(N) _(s) _(+N) _(s) ₎}. As discussed in detail herein, for a particular candidate fulfillment plan, the processor 202 may use the values in the first subset of the decision variable X_(r) to determine sequence in which orders are processed, the values in the second subset of the decision variable X_(r) to determine which of the providers 102 is to provide the items in the orders, and the values in the third subset of the decision variable X_(r) to determine which of the intermediaries 110 are to handle the items in the orders.

At block 304, the processor 202 may execute the instructions 224 to calculate evaluation values for the candidate fulfillment plans. The evaluation value (which is equivalently recited herein as a score) for a candidate fulfillment plan may be determined through application of an evaluation function (which is equivalently recited herein as an objective function), on factors 244 of the candidate fulfillment plan. Particularly, for instance, the processor 202 may calculate the evaluation value for a candidate fulfillment plan that was generated using a particular decision variable X_(r) through application of the following equation (2):

f(X _(r))=w ₁·α₁(X _(r))+w ₂·α₂(X _(r))+w ₃·α₃(X _(r))+w ₄·α₄(X _(r))/n _(orders) +C(X _(r))

In Equation (2),

α₁(X_(r)) = total  number  of  orders  that  have  infeasible  fulfillment  plan α₂(X_(r)) = total  number  of  orders  that  not  fully  fulfilled ${\alpha_{3}\left( X_{r} \right)} = {\sum\limits_{\underset{{delivery}\mspace{14mu} {constrain}}{{orders}\mspace{14mu} {violate}}}^{\;}\; \left( {{delivery}\mspace{14mu} {time}\text{-}\max \mspace{14mu} {allowed}\mspace{14mu} {delivery}\mspace{14mu} {time}} \right)}$ ${\alpha_{4}\left( X_{r} \right)} = {\sum\limits_{\underset{{package}\mspace{20mu} {constrain}}{{orders}\mspace{14mu} {violate}}}^{\;}\; \left( {{number}\mspace{14mu} {of}\mspace{14mu} {delivery}\mspace{14mu} {package}\text{-}\max \mspace{14mu} {allowed}\mspace{14mu} {delivery}\mspace{14mu} {package}} \right)}$ w₁, w₂, w₃, w₄:  infeasible  penalties  with  values > 0 n_(orders):  total  number  of  orders C(X_(r)):  total  cost  (any  goal).

Through application of equation (2) on each of the candidate fulfillment plans, a respective evaluation value (or equivalently, score), may be calculated for each of the candidate fulfillment plans. Thus, for instance, a first fulfillment plan for a group of orders to be fulfilled by a first provider 102-1 and a first intermediary 110-1 may have a first evaluation value, a second fulfillment plan for a group of order to be filled by a second provider 102-2 and a second intermediary 110-2 may have a second evaluation value, and so forth.

At block 306, the processor 202 may execute the instructions 228 to output instructions to deliver the items over the network 100 according to the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors among the calculated evaluation values to maximize compliance with the plurality of factors in the delivery of the items. As noted above, the plurality of factors may include the factors included in equation (2). In addition, the processor 202 may output the instructions to the provider or providers 102 identified in the selected candidate fulfillment plan via the interface 204. In response to receipt of the instructions, the provider(s) 102 may initiate delivery of the items through the selected intermediary or intermediaries 110.

By way of example in which the items are data packets, the provider(s) 102 may insert appropriate routing and destination address information into the data packets or packages containing the data packets such that the data packets are delivered through the selected intermediary or intermediaries 110. In other examples in which the items are products, the provider(s) 102 may set up the products to be delivered to the selected intermediary or intermediaries 110. In any of these examples, the items may be delivered to the destination or destinations 120 through the network 100 according to the selected fulfillment plan.

With reference now to FIGS. 4A and 4B, at block 402, the processor 202 may execute the instructions 214 to initiate a candidate group of R random decision variables, in which the processor 202 may generate the R random decision variables. The variable “R” may represent a value greater than one. The processor 202 may implement any suitable random value generation scheme to generate each of the random decision variables to include different sets of random values with respect to each other and to have some distribution such as a uniform distribution. In addition, each of the random decision variables may be an artificially defined array of values between 0 and 1. Particularly, for instance, each random decision variable may be represented as (X_(r)) in equation (1) as discussed above with respect to FIG. 3. Each of the random decision variables (X_(r)) may include subsets of random values, which may be used to determine the candidate fulfillment plans. In addition, the processor 202 may store the generated random decision variables 230 in the memory 210.

At blocks 404 and 406, respectively, the processor 202 may execute the instructions 218 to set an outer counter (first counter) to “1” and to set an inner counter (second counter) to “1”.

The processor 202 may execute blocks 408-412 for the random decision variable indicated by the inner counter contained in the candidate group of R random decision variables. Particularly, at block 408, the processor 202 may execute the instructions 222 to generate a candidate fulfillment plan using the random decision variable. Generally speaking, a fulfillment plan may be a plan to assign items to be delivered from a chosen provider or providers 102 to a destination or destinations 120 via a chosen intermediary or intermediaries 110. In addition, the processor 202 may use the subsets of random values in the random decision variable to determine the sequence in which multiple orders in the candidate fulfillment plan are to be processed, to determine the provider or providers 102 that are to provide the items in the orders, and to determine the intermediary or intermediaries 110 that are to handle the items in the orders.

With reference now to method 500 in FIG. 5, which shows an example manner in which the processor 202 may generate the candidate fulfillment plan. At block 502, the processor 202 may generate a sequence of the orders to be processed. Particularly, for instance, the processor 202 may identify from the order data 234 orders that have not yet been fulfilled and may determine the sequence in which the processor 202 is to process the unfilled orders. For instance, the processor 202 may process the unfilled orders one-by-one according to a sequence determined by the subset of the random decision variable selected at block 406, e.g., the subset of X_(r), {x_((2N) _(s) ₊₁₎, x_(r(2N) _(s) ₊₂₎, . . . , x_(r(2N) _(s) _(+K))}, in which K is the total number of unfilled orders. That is, each of the unfilled orders may be assigned to one of the random values in the subset of X_(r). Thus, a first unfilled order may be assigned the random value x_(r(2N) _(s) ₊₁₎, a second unfilled order may be assigned the random value x_(r(2N) _(x) ₊₂₎, a third unfilled order may be assigned the random value x_(r(2N) _(s) ₊₃₎.

According to examples, the processor 202 may determine the first order to be processed from the random values assigned to the orders. That is, for instance, the sequence of the orders may be based upon where the random values lie with respect to particular ranges of values. To illustrate this process, the following example is provided in which there are a total of three unfulfilled orders, Order A, Order B, and Order C, to be processed, i.e., K=3, with {x_(r(2N) _(s) ₊₁₎, x_(r(2N) _(s) ₊₂₎, x_(r(2N) _(s) ₊₃₎}={0.9, 0.4, 0.1}. In this example, the first order to be processed may be determined by the value of x_(r(2N) _(s) ₊₁₎. Considering there are three orders to be processed, if the value of x_(r(2N) _(s) ₊₁₎falls in the range (0, ⅓], then Order A will be processed first; if the value of x_(r(2N) _(s) ₊₁₎ falls in the range (⅓, ⅔], then Order B will be processed first; and if value of x_(r(2N) _(s) ₊₁₎ falls in the range (⅔, 1], then Order C will be processed first. In this example, the value of x_(r(2N) _(s) ₊₁₎=0.9, which falls in the range (⅔, 1], and therefore Order C is determined to be processed first.

Continuing with the example, the second order to be processed in the sequence may be determined by the value of x_(r(2N) _(s) ₊₂₎. Considering there are two orders remaining to be processed (i.e., Order A and Order B), if the value of x_(r(2N) _(s) ₊₂₎ falls in the range (0, ½], then Order A will be processed before Order B and if the value of x_(r(2N) _(s) ₊₂₎ falls in the range (½, 1], then Order B will be processed before Order A. In this example, the value of x_(r(2N) _(s) ₊₂₎=0.4, which falls in the range (0, ½], and therefore Order A is determined to be processed before Order B. As such, the processing sequence of the orders in this example is Order C, Order A, and Order B.

At block 504, the processor 202 may process a first order in the sequence of orders generated at block 502 to determine a provider or providers 102 for the items in the first order using a second subset of the random decision variable. In other words, the processor 202 may assign valid providers 102 for the order that may be able to supply the items in the order satisfy rules and constraints associated with the order. For instance, the processor 202 may construct a list of valid providers 102 that include providers 102 that are able to meet a delivery time constraint, satisfy other rules, such as shipping restriction rules, etc. By way of particular example, in which n represents the total number of valid providers 102 in the list; if n_(p)=0, the processor 202 may mark the order as having none of the items fulfilled. In this event, the processor 202 may store an indication that the order has not been fulfilled and the processor 202 may process the next order in the sequence of orders.

However, if there is at least one valid provider 102 for the order, the processor 202 may assign the valid providers 102 one-by-one according to a sequence determined by the second subset of the random decision variable X_(r), {x_(r1), x_(r2), . . . , x_(rN) _(s) }, until the order is fully fulfilled or all the valid providers 102 have been processed. The processor 202 may assign the valid providers 102 in the following manner.

-   -   Increase i_(p)=i_(p)+1; if i_(p)>N_(s), set i_(p)=1;     -   Identify a valid provider from the list according to the value         of the random value x_(ri) _(p) , e.g., if

${\frac{j - 1}{n_{p}} < x_{{ri}_{p}} \leq \frac{j}{n_{p}}},$

then the j^(th) valid provider 102 in the list is identified.

-   -   Assign the j^(th) valid provider to fulfill the order as much as         possible; record the assignment and fulfillment, and update the         inventory of the j^(th) valid provider;     -   Decrease n_(p)=n_(p)−1;     -   If the order is fully fulfilled, stop the process of assigning         valid providers, and mark the order as fully fulfilled;         otherwise, if n_(p)=0, stop the process of assigning valid         source nodes, and mark the order as partially fulfilled; if none         of the above, go back to the first step.

Following block 504, the processor 202 may have identified a valid provider 102, multiple valid providers 102, or no valid providers. In addition, the processor 202 may have stored this information as factors 244 in the memory 210.

At block 506, the processor 202 may determine an intermediary or intermediaries 110 to handle the currently processed order. In other words, the processor 202 may assign an intermediary 110 to each of the valid providers 102 determined at block 504. For instance, the processor 202 may set up a list of valid intermediaries 110 such that the transit from any listed intermediary 110 to the processed order may not be restricted. By way of particular example, in which n_(h) represents the total number of intermediaries 110 in the list, the processor 202 may assign the valid intermediaries in the following manner.

-   -   set

m=min(number of providers assigned to the order, customer specified max number of packages allowed to ship for fulfilling the order)

-   -   generate a sequence of intermediaries 110 with m elements from         the list of valid intermediaries as follows:         -   set k=0;         -   increase i_(h)=i_(h)+1; if i_(h)>N_(s), set i_(h)=1;         -   identify an intermediary from the list of valid             intermediaries according to the value of the random number             x_(r(N) _(s) _(+i) _(h) ₎, e.g., if

${\frac{j - 1}{n_{h}} < x_{r{({N_{s} + i_{h}})}} \leq \frac{j}{n_{h}}},$

then the j^(th) intermediary in the valid intermediary list is picked up;

-   -   -   increase k=k+1; if k=m, stop; otherwise, go back to the             first step.

    -   for each provider assigned to fulfill the currently processed         order, assign an intermediary from the sequence of         intermediaries generated above as follows:         -   check the sequence of intermediaries generated above             one-by-one until the first feasible intermediary is found             such that: the connection from the processed provider to the             intermediary is not restricted; the delivery time from the             processed provider to the processed order via the chosen             intermediary is feasible; and if a feasible intermediary is             not found, set the processed provider itself as its             intermediary.

    -   stop if all providers assigned to fulfill the currently         processed order are processed.

At block 508, the processor 502 may store various information pertaining to the generation of the candidate fulfillment plan using the random decision variable. The various information (or factors 244) pertaining to the candidate fulfillment plan may include, for instance, a total number of orders that have an infeasible fulfillment plan, a total number of orders that are not fulfilled, a total number of orders that violate a delivery constraint, a total number of orders that violate an item constraint, etc.

At block 510, the processor 202 may determine whether another order is to be processed. That is, the processor 202 may determine whether there is another unfilled order to be processed. In response to a determination that another order is to be processed, the processor 202 may select the next order in the sequence of orders generated at block 502. In addition, the processor 202 may repeat blocks 504-508 on the next order in the sequence. The processor 202 may also repeat blocks 504-512 for any additional orders in the sequence until the processor 202 determines that all of the orders in the sequence have been processed, at which point the method 500 may end as indicated at block 514.

According to embodiments, the processor 202 may implement a feasibility improvement process for the orders in the candidate fulfillment plan. That is, the processor 202 may implement the feasibility improvement process to improve the feasibility of the orders that have infeasible fulfillment plans. An order having an infeasible fulfillment plan may be defined as an order that is not fully fulfilled, an order for which the fulfillment plan of the order violates a delivery constraint or a maximum package constraint, etc. The processor 202 may implement the feasibility improvement process for an order with an infeasible fulfillment plan as follows.

If the order is not fully fulfilled, try to fulfill the order by ignoring the delivery time as follows.

-   -   (a) Construct a list of providers for the order such that the         delivery time from a valid provider to the order violates         delivery constraints but still satisfies shipping restriction         rules. If the list is empty, stop, otherwise, go to the next         step.     -   (b) Check the list of providers generated by step (a)         one-by-one, if there is any available inventory that may be         assigned to fulfill the processed order, assign the provider,         and record the assignment and fulfillment, and update the         inventory of the assigned provider. In addition, set the         assigned provider itself as its intermediary. Stop the process         if the order is fully fulfilled or if all of the providers in         the list have been processed.     -   (c) Update the delivery time and total number of packages of the         processed order.

If the fulfillment plan of the processed order violates the delivery constraint or the maximum packages constraint, the processor 202 may execute the following feasibility improvement process:

-   -   (a) Collect all providers assigned to the processed order as a         list;     -   (b) For each provider identified in the list, find all feasible         intermediaries such that: the connection from the processed         provider to the intermediary is not restricted and the delivery         time from the processed provider to the processed order via the         chosen intermediary is feasible;     -   (c) Find the intermediary that is feasible for most providers         contained in the list, if multiple intermediaries exist, choose         the first one; then set the chosen intermediary as the connected         intermediary to the providers for which the intermediary is         feasible; and remove the providers that have been assigned a         feasible intermediary from the list of providers;     -   (d) If the list of providers is empty, or if there is no         feasible intermediary for all of the providers contained in the         list, stop; otherwise, go to step (c).

Following implementation of the method 500, the processor 202 may have stored factors 244 pertaining to the orders in a candidate fulfillment plan in the memory 210. The factors 244 may include factors that were obtained with or without implementation of the feasibility improvement process.

With reference back to FIG. 4A, following generation of the candidate fulfillment plan using the selected random decision variable at block 408, the processor 202 may execute the instructions 224 to calculate an evaluation value for the generated candidate fulfillment plan. The evaluation value may be defined as a measure of a compliance of the candidate fulfillment plan with a plurality of factors pertaining to the delivery of items. In this regard, the evaluation value may be determined through application of an evaluation function (which is also referenced herein as an optimization function) that includes the plurality of factors. An example of the evaluation function is described above with respect to equation (2).

At block 412, the processor 202 may record the candidate fulfillment plan generated at block 408 and the associated evaluation of the candidate fulfillment plan, for instance, in the memory 210. During a first iteration of blocks 408-412, the processor 202 may simply record the generated fulfillment plan. In further iterations, however, the processor 202 may update the recorded fulfillment plan and the associated evaluation to be the best fulfillment plan, e.g., the fulfillment plan that has the maximized compliance of the fulfillment plans that have been generated during the iterations.

At block 414, the processor 202 may execute the instructions 218 to increment the inner counter by 1. In addition, at block 416, the processor 202 may determine whether the inner counter is greater than R, e.g., whether each of the candidate groups of R random decision variables has been processed. In response to a determination that the inner counter is less than R, the processor 202 may repeat blocks 408-412 for the decision variable indicated by the inner counter, which has been increased by one since the prior iteration of blocks 408-412. In addition, the processor 202 may repeat blocks 408-416 until a determination is made at block 416 that the inner counter is greater than R.

In response to a determination at block 416 that the inner counter is greater than R, at block 418, the processor 202 may execute the instructions 218 to increment the outer counter by 1. In addition, at block 420, the processor 202 may determine whether the outer counter exceeds a certain maximum number of iterations. The certain maximum number of iterations may be user-defined and may be set to prevent the method 400 from repeating without stop and/or to generate and evaluate a certain number of candidate fulfillment plans. In response to a determination at block 420 that the maximum number of iterations has not been reached, the processor 202 may construct a population by selecting R random decision variables with a probability from the current candidate group of R random decision variables as indicated at block 422. The probability may be provided by a chosen heuristic optimization algorithm, e.g., the genetic algorithm, the simulated annealing algorithm, and the like. The same decision variables contained in the candidate group may be selected multiple times.

At block 424, the processor 202 may generate a new candidate group of R random decision variables given the population constructed at block 422. In addition, the processor 202 may repeat blocks 406-424 using the new candidate group of R random decision variables. In this regard, at block 412, the currently best candidate fulfillment plan and the associated evaluation may be updated as additional best candidate fulfillment plans are identified.

With reference back to block 420, in response to a determination that the outer counter exceeds the maximum number of iterations, the processor 202 may execute the instructions 226 to identify the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors identified in the evaluation function. By way of example, the processor 202 may determine that the candidate fulfillment plan having the lowest evaluation value determined through application of the evaluation function defined by equation (2) may have the maximized compliance. In other words, the processor 202 may identify the candidate fulfillment plan as the candidate fulfillment plan that was identified as the best candidate fulfillment plan through multiple iterations of block 412 as discussed above. In any regard, the processor 202 may identify the candidate fulfillment plan at block 426 by passing the best candidate fulfillment plan identified at block 412.

At block 428, the processor 202 may record the candidate fulfillment plan as the plan that is to be implemented to deliver the items in the orders. In addition, at block 430, the processor 202 may execute the instructions 228 to output instructions to cause implementation of the identified fulfillment plan. That is, for instance, the processor 202 may output instructions via the interface 204 to the provider or providers 102 selected in the identified fulfillment plan and the provider or providers 102 may initiate delivery of the items in the orders according to the instructions.

Some or all of the operations set forth in the methods 400 and 500 may be contained as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the methods 400 and 500 may be embodied by computer programs, which may exist in a variety of forms both active and inactive. For example, they may exist as machine readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.

Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

Although described specifically throughout the entirety of the instant disclosure, representative examples of the present disclosure have utility over a wide range of applications, and the above discussion is not intended and should not be construed to be limiting, but is offered as an illustrative discussion of aspects of the disclosure.

What has been described and illustrated herein is an example of the disclosure along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Many variations are possible within the spirit and scope of the disclosure, which is intended to be defined by the following claims—and their equivalents—in which all terms are meant in their broadest reasonable sense unless otherwise indicated. 

What is claimed is:
 1. An apparatus comprising: a processor; and a memory on which is stored machine readable instructions that are to cause the processor to: generate a plurality of candidate fulfillment plans regarding delivery of items over a network, wherein each of the plurality of candidate fulfillment plans is generated using a respective decision variable, each decision variable being an array of values; calculate, through application of an evaluation function, an evaluation value for each of the candidate fulfillment plans, the evaluation value for a candidate fulfillment plan being a measure of a compliance of the candidate fulfillment plan with a plurality of factors pertaining to the delivery of the items; and output instructions regarding delivery of the items over the network according to the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors among the calculated evaluation values to maximize compliance with the plurality of factors in the delivery of the items.
 2. The apparatus according to claim 1, wherein the instructions are further to cause the processor to: generate the decision variables as random decision variables that each includes a first subset of random values, a second subset of random values, and a third subset of random values, wherein each of the first subset of random values, the second subset of random values, and the third subset of random values has a uniform distribution from the lower limit value to the upper limit value.
 3. The apparatus according to claim 2, wherein the network comprises providers from which the items are configured to be provided and intermediaries through which the items are configured to traverse, and wherein the instructions are further to cause the processor to: for each of the plurality of candidate fulfillment plans, determine a sequence for a plurality of orders for the items to be processed using the first subset of random values; determine which of the providers are to provide the items for each of the plurality of orders using the second subset of random values; and determine which of the intermediaries through which the items are to traverse using the third subset of random values.
 4. The apparatus according to claim 3, wherein the plurality of orders comprises a first order and a second order, wherein to determine the sequence for the plurality of orders for the items to be processed, the instructions are further to cause the processor to: assign a first random value of the first subset of random values to the first order; assign a second random value of the first subset of random values to the second order; determine the sequence for the first order and the second order to be processed based upon the values of the first random value and the second random value; and wherein the instructions are further to cause the processor to process each of the first order and the second order in the determined sequence.
 5. The apparatus according to claim 4, wherein to process each of the first order and the second order, the instructions are further to cause the processor to, for each of the orders and in the determined sequence: access a list of valid providers for the items included in the order, wherein a valid provider is a provider that is configured to satisfy delivery constraints and rules associated with delivery of the items; assign the valid providers to provide the items one-by-one according to a sequence determined by the random values in the second subset of random values until the order is fulfilled or all of the valid providers are processed without the order being fulfilled; and store the order as being fulfilled or as being unfilled.
 6. The apparatus according to claim 5, wherein to determine which of the intermediaries through which the items are to traverse, the instructions are further to cause the processor to, for a currently processed order in the determined sequence: access a list of valid intermediaries through which the items in the order is permitted to traverse; generate a sequence of the valid intermediaries from the list of valid intermediaries based upon the random decision values in the third subset of random values; for each of the assigned valid providers, determine, one-by-one according to the generated sequence of valid intermediaries, whether the valid intermediary is able to satisfy a certain restriction until a first intermediary that is able to satisfy the certain restriction is determined or in response to all of the valid intermediaries being processed without a valid intermediary that is able to satisfy the certain restriction being determined; and store the valid intermediary for the assigned valid provider or an indication that a valid intermediary for the assigned valid provider has not been determined.
 7. The apparatus according to claim 6, wherein the instructions are further to cause the processor to: for any of the candidate fulfillment plans that includes an order that is not fulfilled or includes an assigned valid provider for which a valid intermediary has not been determined, implement a feasibility improvement process for the order.
 8. The apparatus according to claim 1, wherein the evaluation function includes a total number of orders that have an infeasible fulfillment plan, a total number of orders that are not fulfilled, a total number of orders that violate a delivery constraint, and a total number of orders that violate an item constraint.
 9. A method comprising: generating, by a processor, random decision variables, wherein each of the random decision variables is an array of random values that range from a lower limit value to an upper limit value; generating, by the processor, a respective candidate fulfillment plan regarding fulfillment of orders for delivery of items over an infrastructure through use of a respective random decision variable; applying, by the processor, an objective function to calculate a respective score for each of the generated candidate fulfillment plans, the score for a candidate fulfillment plan being a measure of a compliance of the candidate fulfillment plan with a plurality of factors pertaining to fulfilling the orders; and instructing, by the processor, a provider to deliver the items over the infrastructure according to the candidate fulfillment plan having the score that corresponds to a maximized compliance with the plurality of factors among the calculated scores to maximize compliance with the plurality of factors in the fulfillment of the orders.
 10. The method according to claim 9, wherein generating the random decision variables further comprises generating the random decision variables to each include a first subset of random values, a second subset of random values, and a third subset of random values.
 11. The method according to claim 10, wherein the infrastructure comprises providers from which the items are configured to be provided and intermediaries through which the items are configured to traverse, the method further comprising: for each of the plurality of candidate fulfillment plans, determining a sequence for the orders for delivery of the items to be processed using the first subset of random values; determining which of the providers are to provide the items for each of the orders using the second subset of random values; and determining which of the intermediaries through which the items are to traverse using the third subset of random values.
 12. The method according to claim 11, wherein the orders comprise a first order and a second order, and wherein the method further comprises: assigning a first random value of the first subset of random values to the first order and a second random value of the first subset of random values to the second order; determining the sequence for the first order and the second order to be processed based upon the first random value and the second random values; and processing each of the first order and the second order in the determined sequence.
 13. The method according to claim 12, wherein processing each of the first order and the second order in the determined order further comprises: for each of the first order and the second order and in the determined sequence, accessing a list of valid providers for the items included in the order, wherein a valid provider is a provider that is configured to satisfy delivery constraints and rules associated with delivery of the items; assigning the valid providers to provide the items one-by-one according to a sequence determined by the random values in the second subset of random values until the order is fulfilled or all of the valid providers are processed without the order being fulfilled; and storing the order as being fulfilled or as being unfilled.
 14. The method according to claim 13, wherein determining which of the intermediaries through which the items are to traverse further comprises: for each of the first order and the second order and in the determined sequence, accessing a list of valid intermediaries through which the items in the order is permitted to traverse; generating a sequence of the valid intermediaries from the list of valid intermediaries based upon values of the random values in the third subset of random values; for each of the assigned valid providers, determining, one-by-one according to the generated sequence of valid intermediaries, whether the valid intermediary is able to satisfy a certain restriction until a first intermediary that is able to satisfy the certain restriction is determined or in response to all of the valid intermediaries being processed without a valid intermediary that is able to satisfy the certain restriction being determined; and storing the valid intermediary for the assigned valid provider or an indication that a valid intermediary for the assigned valid provider has not been determined.
 15. The method according to claim 9, wherein applying the objective function to calculate a respective score for each of the generated candidate fulfillment plans further comprises applying the objective function to include a weighted total number of orders that have an infeasible fulfillment plan, a weighted total number of orders that are not fulfilled, a weighted total number of orders that violate a delivery constraint, and a weighted total number of orders that violate an item constraint.
 16. The method according to claim 9, wherein generating and applying further comprises: initiating a candidate group of R random decision variables; setting a first counter; setting a second counter; for a random decision variable corresponding to the second counter in the candidate group, generating a candidate fulfillment plan; calculating an evaluation value of the generated candidate fulfillment plan; recording a currently best candidate fulfillment plan and associated evaluation; and incrementing the second counter; and repeating the generating, the calculating, and the recording for a random decision variable corresponding to the incremented second counter until the second counter exceeds R.
 17. The method according to claim 16, further comprising: in response to a determination that the second counter exceeds R, incrementing the first counter; determining whether the first counter exceeds a certain maximum number of iterations; in response to a determination that the first counter exceeds the certain number of iterations, constructing a population by selecting R random decision variable with a probability from a current candidate group of R random decision variables; and generating a new candidate group of R random decision variables given the constructed population; repeating the setting of the second counter, the generating, the calculating, the recording for the random decision variables in the new candidate group of R random decisions and the incrementing of the second counter.
 18. A non-transitory computer readable medium on which is stored machine readable instructions that when executed by a processor are to cause the processor to: generate a first random decision variable and a second random decision variable, wherein each of the first and second random decision variables is an array of random values that range from a lower limit value to an upper limit value; generate, using the first random decision variable, a first candidate fulfillment plan regarding fulfillment of orders for delivery of items over an infrastructure; generate, using the second random decision variable, a second candidate fulfillment plan regarding fulfillment of orders for delivery of items over an infrastructure; calculate a respective evaluation value for each of the generated first and second candidate fulfillment plans, wherein the evaluation value for a candidate fulfillment plan is a measure of a compliance of the candidate fulfillment plan with a plurality of factors pertaining to fulfilling the orders; and output instructions to deliver the items over the infrastructure according to the first or second candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors among the calculated evaluation values to maximize compliance with the plurality of factors in the fulfillment of the orders.
 19. The non-transitory computer readable medium according to claim 18, wherein the infrastructure comprises providers from which the items are configured to be provided and intermediaries through which the items are configured to traverse, and wherein the instructions are further to cause the processor to: generate each of the first and second random decision variables to include a first subset of random values, a second subset of random values, and a third subset of random values; and for each of the first and second candidate fulfillment plans, determine a sequence for the orders for delivery of the items to be processed using the first subset of random values; determine which of the providers are to provide the items for each of the orders using the second subset of random values; and determine which of the intermediaries are to handle the items using the third subset of random values.
 20. The non-transitory computer readable medium according to claim 18, wherein to calculate the respective evaluation value for each of the generated first and second candidate fulfillment plans, the instructions are further to cause the processor to: apply an objective function to the candidate fulfillment plan, wherein the objective function includes, for the candidate fulfillment plan, a weighted total number of orders that have an infeasible fulfillment plan, a weighted total number of orders that are not fulfilled, a weighted total number of orders that violate a delivery constraint, and a weighted total number of orders that violate an item constraint. 